package cn.mitool.crypto.digest;

import org.apache.commons.codec.digest.DigestUtils;

import java.io.IOException;
import java.io.InputStream;

/**
 * MD5摘要
 *
 * @author dragon
 * @version 1.0
 * @date 2024/6/28 17:41
 */
public class MD5 {

    /**
     * MD5摘要
     *
     * @param data 数据
     * @return MD5哈希值
     */
    public String digestHex(String data) {
        /* Java MD5 */
        // MessageDigest messageDigest = MessageDigest.getInstance("MD5");
        // messageDigest.update(data.getBytes(StandardCharsets.UTF_8));
        // // 计算哈希值并转换为16进制字符串
        // byte[] digest = messageDigest.digest();
        // return ByteUtil.byteToHexString(digest);

        /* commons-codec MD5 */
        return DigestUtils.md5Hex(data);
    }

    /**
     * MD5摘要
     *
     * @param data 数据
     * @return MD5哈希值
     */
    public String digestHex(InputStream data) throws IOException {
        /* Java MD5 */
        // MessageDigest messageDigest = MessageDigest.getInstance("MD5");
        // messageDigest.update(data.readAllBytes());
        // // 计算哈希值并转换为16进制字符串
        // byte[] digest = messageDigest.digest();
        // return ByteUtil.byteToHexString(digest);

        /* commons-codec MD5 */
        return DigestUtils.md5Hex(data);
    }

    /**
     * MD5摘要
     *
     * @param data 数据
     * @return MD5哈希值
     */
    public String digestHex(byte[] data) {
        /* Java MD5 */
        // MessageDigest messageDigest = MessageDigest.getInstance("MD5");
        // messageDigest.update(data);
        // // 计算哈希值并转换为16进制字符串
        // byte[] digest = messageDigest.digest();
        // return ByteUtil.byteToHexString(digest);

        /* commons-codec MD5 */
        return DigestUtils.md5Hex(data);
    }

}
